A virtual machine (VM) is a software implementation of a machine (e.g., a computer) that executes programs like a physical machine. Virtual machines are separated into two major categories, based on their use and degree of correspondence to any real machine. A system virtual machine provides a complete system platform which supports the execution of a complete operating system (OS). In contrast, a process virtual machine is designed to run a single program, which means that it supports a single process. An essential characteristic of a virtual machine is that the software running inside is limited to the resources and abstractions provided by the virtual machine.
With only a small percentage of a physical machine in use at a given time, virtualization allows a physical machine to be shared to increase its overall utilization. One design factor with virtualization is efficient sharing of hardware resources provided by a physical machine, such as processor, memory and networking bandwidth. Processor and networking resources are typically underutilized even in a virtual environment. However, memory resources are often in high demand. Therefore, memory management techniques directed to efficient memory sharing in a virtual environment potentially enables virtual machines to be more dynamic, power efficient and cost efficient. It is with respect to these and other considerations that the present improvements have been needed.